In recent high-technology computer systems, there exists a strong demand for considerable increases in the performance of the storage device. One of the possible solutions for increasing the performance includes a disk array, arranged by employing a large number of drives with each drive having a relatively small storage capacity. Typically, these arrays are referred to as Redundant Arrays of Inexpensive Disks (RAID) of varying levels and types. In general, RAID arrangements comprise three basic elements: a controller managing the disk array; a collection of disks of ranging capacities; and array management software, provided in the host or a controller, which uses various algorithms to distribute data across the disks and presents the array as a single virtual disk to a host computer operating system.
In one type of disk array, RAID level 3, data is subdivided and the subdivided data is processed in a parallel mode. Typically, RAID level 3 requires a dedicated hardware controller and at least three disks, where one disk is dedicated to storing parity data and the remaining disks store data. All disks service each read request and send their data in parallel to the controller. Data is segmented at the byte level. While providing high transfer rates for applications involving the movement of large files, sequential input/output (I/O) operations are slower due to the involvement of all disks in each read and write.
Another type of array, RAID level 5, has improved sequential I/O performance through elimination of a dedicated parity drive. In contrast to level 3, data and parity information are interleaved among all the disks. Further, data is segmented at a block level, is distributed, and is independently handled.
A problem exists in these RAID environments of possible corruption of data or a portion of memory. Ensuring the validity of data written to a disk remains vital, but efforts to ensure valid data have been cumbersome. Typically, software mechanisms that read data and perform comparisons have been employed to ensure data validity. Unfortunately, the use of such routines is slow, especially as the number of sectors of data being accessed increases.
Thus, a need exists for a faster, more integrated manner of performing data validity checks for a disk array.